import qrcode
from PIL import Image, ImageDraw, ImageFont
import os


def create_qr_with_two_links(link1, link2, save_path):
    """
    生成包含两个网站链接的二维码并保存到指定路径

    参数:
    link1 (str): 第一个网站链接
    link2 (str): 第二个网站链接
    save_path (str): 二维码保存的完整路径（包括文件名和扩展名）
    """
    try:
        # 验证保存路径的目录是否存在
        directory = os.path.dirname(save_path)
        if directory and not os.path.exists(directory):
            os.makedirs(directory)
            print(f"创建目录: {directory}")

        # 将两个链接组合成一个字符串，用换行符分隔
        combined_links = f"{link1}\n{link2}"

        # 创建二维码
        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_H,  # 高容错率
            box_size=10,
            border=4,
        )

        # 添加组合后的链接数据
        qr.add_data(combined_links)
        qr.make(fit=True)

        # 创建二维码图像
        img = qr.make_image(fill_color="black", back_color="white").convert('RGB')

        # 添加文本说明
        draw = ImageDraw.Draw(img)

        # 尝试加载字体
        try:
            # 在Windows上尝试使用Arial字体
            font = ImageFont.truetype("arial.ttf", 16)
        except:
            # 如果找不到指定字体，使用默认字体
            font = ImageFont.load_default()

        # 在二维码下方添加文本说明
        text = "扫描后可见两个网站链接"
        text_width = draw.textlength(text, font=font)
        img_width, img_height = img.size
        text_position = ((img_width - text_width) // 2, img_height - 25)

        # 绘制白色背景和黑色文字
        draw.rectangle([text_position[0] - 5, text_position[1] - 5,
                        text_position[0] + text_width + 5, text_position[1] + 20],
                       fill="white")
        draw.text(text_position, text, fill="black", font=font)

        # 保存二维码到指定路径
        img.save(save_path)

        print(f"二维码已成功生成并保存到: {save_path}")
        print(f"包含的链接: {link1} 和 {link2}")

        return True

    except Exception as e:
        print(f"生成二维码时出错: {e}")
        return False


if __name__ == "__main__":
    # 定义两个网站链接
    website1 = "https://gitee.com/riko-lou-tian"
    website2 = "https://blog.csdn.net/2401_89119815?type=blog"

    # 指定保存路径 - 确保包含文件名和扩展名
    save_path = r"C:\Users\15699\Pictures\Camera Roll\我的个人展示.png"

    # 生成二维码
    success = create_qr_with_two_links(website1, website2, save_path)

    if success:
        print("二维码生成成功！")
    else:
        print("二维码生成失败。")